#ifndef YOUTH_H_
#define YOUTH_H_
#include <QString>
#include <QDate>
#include <QObject>
#include "DeaconsRequirements.h"
#include "TeachersRequirements.h"
#include "PriestsRequirements.h"
#include "QuorumType.h"

class Youth;
typedef Youth* YouthPtr;

class Youth : public QObject
{
	Q_OBJECT
	
public:
 
	Youth();
	virtual ~Youth();

	DeaconsRequirements& deacons() {return m_deacon;}
	TeachersRequirements& teachers() {return m_teacher;}
	PriestsRequirements& priests() {return m_priest;}
	
	CertificateRequirements& requirements(QuorumType::Type i_quorum);
	
signals:
	void modified();
	
public:
//accessors
    QuorumType::Type quorum();
    QString name();
    QDate   birthdate();
    QString phoneNumber();
    QString address();
    QDate quorumEntryDate();
    QDate lastUpdate();

//modifiers
	void setQuorum(QuorumType::Type quorum);
	void setName(QString name);
	void setBirthdate(QDate birthdate);
	void setPhoneNumber(QString number);
	void setAddress(QString address);
	void setQuorumEntryDate(QDate date);
	void setLastUpdate(QDate date);
		
private:
    QuorumType::Type m_quorum;
	QString m_name;
	QDate   m_birthdate;
	QString m_phoneNumber;
	QString m_address;
	QDate   m_quorumEntryDate;
	QDate   m_lastUpdate;
	
	DeaconsRequirements m_deacon;
	TeachersRequirements m_teacher;
	PriestsRequirements m_priest;
};

#endif /*YOUTH_H_*/
